Make GtkBuilder do not delay construct properties that can be resolved
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>
Wed, 29 Jun 2011 14:45:33 +0000 (11:45 -0300)
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>
Wed, 29 Jun 2011 14:45:33 +0000 (11:45 -0300)
(so construct is respected when possible) and skip construct only props that
can not.

gtk/gtkbuilder.c

index 3e970e037a77ebcf45a772d02dbcfc4337e4df14..d11fcf9c18bca6fae719d3f24e4e5d28b35b6797 100644 (file)
@@ -503,29 +503,29 @@ gtk_builder_get_parameters (GtkBuilder  *builder,
       if (G_IS_PARAM_SPEC_OBJECT (pspec) &&
           (G_PARAM_SPEC_VALUE_TYPE (pspec) != GDK_TYPE_PIXBUF))
         {
-          if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
+          GObject *object = gtk_builder_get_object (builder, prop->data);
+
+          if (object)
+            {
+              g_value_init (&parameter.value, G_OBJECT_TYPE (object));
+              g_value_set_object (&parameter.value, object);
+            }
+          else 
             {
-              GObject *object;
-              object = gtk_builder_get_object (builder, prop->data);
-              if (!object)
+              if (pspec->flags & G_PARAM_CONSTRUCT_ONLY)
                 {
                   g_warning ("Failed to get constuct only property "
                              "%s of %s with value `%s'",
                              prop->name, object_name, prop->data);
                   continue;
                 }
-              g_value_init (&parameter.value, G_OBJECT_TYPE (object));
-              g_value_set_object (&parameter.value, object);
-            }
-          else
-            {
+              /* Delay setting property */
               property = g_slice_new (DelayedProperty);
               property->object = g_strdup (object_name);
               property->name = g_strdup (prop->name);
               property->value = g_strdup (prop->data);
               builder->priv->delayed_properties =
                 g_slist_prepend (builder->priv->delayed_properties, property);
-
               continue;
             }
         }